/* 
           @type 请求方式
           @url 请求路径
           @data 请求要发送的数据
        */
           function ajax(opt) {
            return new Promise(resolve => {
                // 默认配置
                const defaultOpt = {
                    type: 'get',
                    url: '',
                    data: {},
                    success: function () { }
                }
                // 将默认参数和传过来参数合并
                const option = { ...defaultOpt, ...opt }
                // 处理传入的请求参数
                // {a:1,b:2} ==> '?a=1&b=2'
                /* 
                    判断用户传入的参数是否符合规范
                */
                // 请求方式只支持get和post
                const typeArr = ['get', 'post']
                // 数组里面查找是否包含某个数据
                // if(typeArr.indexOf(option.type) === -1){
                if (!typeArr.includes(option.type)) {
                    // 抛出异常
                    throw Error('请求方式支持get和post')
                }
                // 请求路径必须是一个字符串类型
                if (Object.prototype.toString.call(option.url).toLowerCase() !== '[object string]') {
                    throw Error('url must be a string')
                }
                // 请求参数必须是一个对象
                // 请求回调函数必须是一个函数类型
                let dataStr = '?'
                for (let key in option.data) {
                    // console.log(key) // a b
                    // console.log(option.data[key]) // 1  2
                    dataStr += `${key}=${option.data[key]}&`
                }
                // console.log('转换后的参数', dataStr) // '?a=1&b=2&c=3&'
                dataStr = dataStr.slice(0, -1)
                // console.log('转换后的参数', dataStr) // '?a=1&b=2&c=3&'
                const xhr = new XMLHttpRequest
                if (option.type == 'get') {
                    // './login.php' + '[Object object]'
                    xhr.open(option.type, option.url + dataStr, true)
                    xhr.send()
                } else {
                    xhr.open(option.type, option.url, true)
                    xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
                    xhr.send(dataStr.slice(1))
                }
                xhr.onload = function () {
                    // console.log(xhr.responseText)
                   resolve(xhr.responseText)
                }
            })
        }